// Gravity - Version 1.3

// このスクリプトは、１番目のポップアップメニューのレイヤーに重力を適用します。
// ワークエリアの開始時に設定されている速度が、

// 初期速度として使用されます。

//      レイヤー                            プロパティ               チャンネル
//      ------                              ----------               --------
// 1: 重力の適用先レイヤー                  使用しない               使用しない
// 2: 使用しない                            使用しない               使用しない

if (time() == start_time) {
	vel = tmap (time() + step_time, value(pop_layer(1), position)) -
           value(pop_layer(1), position);
	damping = 0.95;							    // 減衰力（０＝摩擦力無限大、１＝摩擦力なし）
	grav = 0.9;								         // 重力の大きさ
	grav_dir = {0,1,0};						// 重力の方向
	accel = grav * grav_dir;	  // 重力のベクトル

	new_pos = value(pop_layer(1), position);
} else {

	vel = vel*damping + accel;						// 分散加速度を速度に追加
	new_pos = new_pos + vel;		         // 分散速度を位置に追加
	
	// コンポジションの境界から跳ね返る位置を確認
	if (new_pos[X] < 0) {
		new_pos[X] = 0;
		vel = {-vel[X], vel[Y]};
	}
	if (new_pos[Y] < 0) {
		new_pos[Y] = 0;
		vel = {vel[X], -vel[Y]};
	}
	if (new_pos[X] > comp_size[X]) {
		new_pos[X] = comp_size[X];
		vel = {-vel[X], vel[Y]};
	}
	if (new_pos[Y] > comp_size[Y]) {
		new_pos[Y] = comp_size[Y];
		vel = {vel[X], -vel[Y]};
	}	
}
value(pop_layer(1), position) = new_pos;
